From 98d77475ab3613ac44f8f716a3f9dccad1e29adf Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 9 Apr 2009 02:40:39 +0000 Subject: [PATCH] (font_put_extra): If VAL is nil, delete the slot for PROP from the list of extra properties. (font_clear_prop): Be sure to delete `:name' font property. --- src/font.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/font.c b/src/font.c index f5a9e3e70e2..bb83fe938a0 100644 --- a/src/font.c +++ b/src/font.c @@ -719,6 +719,8 @@ font_put_extra (font, prop, val) { Lisp_Object prev = Qnil; + if (NILP (val)) + return val; while (CONSP (extra) && NILP (Fstring_lessp (prop, XCAR (XCAR (extra))))) prev = extra, extra = XCDR (extra); @@ -729,6 +731,8 @@ font_put_extra (font, prop, val) return val; } XSETCDR (slot, val); + if (NILP (val)) + ASET (font, FONT_EXTRA_INDEX, Fdelq (slot, extra)); return val; } @@ -3078,13 +3082,20 @@ font_clear_prop (attrs, prop) if (! FONTP (font)) return; + if (! NILP (Ffont_get (font, QCname))) + { + font = Fcopy_font_spec (font); + font_put_extra (font, QCname, Qnil); + } + if (NILP (AREF (font, prop)) && prop != FONT_FAMILY_INDEX && prop != FONT_FOUNDRY_INDEX && prop != FONT_WIDTH_INDEX && prop != FONT_SIZE_INDEX) return; - font = Fcopy_font_spec (font); + if (EQ (font, attrs[LFACE_FONT_INDEX])) + font = Fcopy_font_spec (font); ASET (font, prop, Qnil); if (prop == FONT_FAMILY_INDEX || prop == FONT_FOUNDRY_INDEX) { -- 2.30.2